/*
 * $Id: mod_zycl.cpp 7557b5d4d82b 2012/12/02 09:07:16 pgurumur $
 *
 * Copyright (c) 2006, 2007, 2008 Prabhu Gurumurthy <pgurumur@gmail.com>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#include "mod_zycl.h"
#include "zycl.h"

int
mod_zycl(ClientData cdata, Tcl_Interp *interp, int argc, Tcl_Obj *const *argv)
{
   int retval = TCL_ERROR;
   zycl::zycl zyclptr(interp, argc, argv);

   int length = zyclptr.length();
   std::string command = zyclptr.tostring(argv[1]);
   std::string arg = zyclptr.tostring(argv[2]);
   cdata = cdata;
   setlocale(LC_ALL, "");

   if (length == 3) {
      if ((command == "what-provides") || (command == "wp")) {
         retval = zyclptr.provides(arg);
      }
      else if ((command == "search") || (command  == "srch")) {
         retval = zyclptr.search(arg);
      }
   }
   else if (length == 2) {
      if ((command == "help") || (command == "h")) {
         zyclptr.help();
         retval = TCL_OK;
      }
      else {
         Tcl_WrongNumArgs(interp, 1, argv, "command package");
      }
   }
   else {
      Tcl_WrongNumArgs(interp, 1, argv, "command package, got too many args");
   }

   return retval;
}

